In a computer system, a graphical user interface (“GUI”) is an interface that allows a user to interact with the computer system through graphical controls, icons and other elements, which the user can manipulate to cause the computer system to perform operations. Common GUI elements include buttons, sliders, check boxes, scroll bars, and other controls, icons, menus, and text entry fields. GUI elements may have text descriptions (labels). GUI elements may also have other text associated with them, such as help text, explanations of the GUI elements, or tool tip text.
When a GUI is designed by a team, one or more team members may specify the overall layout and behavior of elements of the GUI. Such team member(s) may provide initial text for elements of the GUI. After the layout and behavior of the GUI are finalized, one or more other team members may edit (or provide) text labels used in the GUI as well as other, associated text that explains the significance of different GUI elements. The text labels and other text for the GUI elements may be stored as part of one or more resource files separate from the definition of the layout and behavior of the GUI elements.
This manner of GUI design facilitates internationalization and localization of software. Internationalization refers to the process of designing software so that it can be easily adapted to various languages and regions, without engineering changes. For example, when a GUI is developed, the overall layout and behavior of elements of the GUI can be defined in a language-independent manner, with separate definition of text associated with the GUI elements. Localization refers to the adaptation of software for a specific region or language by translating text and adding locale-specific components. Localization may be performed multiple times for different regions or languages. For some products, for example, text is translated into 20, 30, or more different languages.
In many cases, as part of the language editing process during development, testing, or localization (translation) of a GUI, a language editor has little or no context for terms or phrases being edited. The language editor may lack access to the GUI or otherwise lack knowledge of the layout and behavior of the GUI. For example, a translator may get a list of terms or phrases in one language, for translation to another language, without access to the GUI itself. This can be problematic when a term or phrase has different meanings depending on context (e.g., second as a unit of time versus second as a count or order). When editing documentation for a GUI, a language editor may similarly lack knowledge of the layout and behavior of the GUI.
In some cases, as part of the language editing process, a language editor may use a tool that can generate a static preview or screenshot of a GUI. Often, the static preview or screenshot only depicts a single GUI element, however, so the overall layout is not shown. Also, such a tool does not generate a complete, operable version of the GUI.
These factors can lead to inconsistencies and quality problems in the text associated with GUI elements. Such problems are exacerbated when translators or other language editors work apart from the main development team for a GUI, or otherwise have limited access or no access to the main development team. Addressing errors and quality problems in text may require time-consuming, extensive testing and reworking of the text associated with GUI elements.